<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>ru.practicum</groupId>
		<artifactId>shareit</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>

	<artifactId>shareit-server</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<name>ShareIt Server</name>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<scope>runtime</scope>
		</dependency>

		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<scope>runtime</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-validation</artifactId>
		</dependency>

		<dependency>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-checkstyle-plugin</artifactId>
			<version>3.2.0</version>
		</dependency>
		<dependency>

			<groupId>org.jacoco</groupId>
			<artifactId>jacoco-maven-plugin</artifactId>
			<version>0.8.8</version>
		</dependency>

		<dependency>
			<groupId>org.mapstruct</groupId>
			<artifactId>mapstruct</artifactId>
			<version>1.5.3.Final</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>

		<dependency>
			<groupId>org.assertj</groupId>
			<artifactId>assertj-core</artifactId>
			<version>3.23.1</version>
			<scope>test</scope>
		</dependency>
        <dependency>
            <groupId>jakarta.persistence</groupId>
            <artifactId>jakarta.persistence-api</artifactId>
        </dependency>

    </dependencies>

	<build>
		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<filtering>true</filtering>
			</resource>
		</resources>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.8.1</version>
				<configuration>
					<source>11</source>
					<target>11</target>
					<annotationProcessorPaths>
						<path>
							<groupId>org.mapstruct</groupId>
							<artifactId>mapstruct-processor</artifactId>
							<version>1.5.3.Final</version>
						</path>
						<path>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
							<version>1.18.24</version>
						</path>
						<path>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok-mapstruct-binding</artifactId>
							<version>0.2.0</version>
						</path>
					</annotationProcessorPaths>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-surefire-plugin</artifactId>
					<configuration>
						<systemPropertyVariables>
							<spring.profiles.active>test</spring.profiles.active>
						</systemPropertyVariables>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-checkstyle-plugin</artifactId>
					<version>3.1.2</version>
					<configuration>
						<configLocation>checkstyle.xml</configLocation>
						<failOnViolation>true</failOnViolation>
						<logViolationsToConsole>true</logViolationsToConsole>
						<includeTestSourceDirectory>true</includeTestSourceDirectory>
					</configuration>
					<executions>
						<execution>
							<goals>
								<goal>check</goal>
							</goals>
							<phase>compile</phase>
						</execution>
					</executions>
					<dependencies>
						<dependency>
							<groupId>com.puppycrawl.tools</groupId>
							<artifactId>checkstyle</artifactId>
							<version>10.3</version>
						</dependency>
					</dependencies>
				</plugin>
				<plugin>
					<groupId>com.github.spotbugs</groupId>
					<artifactId>spotbugs-maven-plugin</artifactId>
					<version>4.7.0.0</version>
					<configuration>
						<effort>Max</effort>
						<threshold>High</threshold>
					</configuration>
					<executions>
						<execution>
							<goals>
								<goal>check</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.jacoco</groupId>
					<artifactId>jacoco-maven-plugin</artifactId>
					<version>0.8.8</version>
					<configuration>
						<output>file</output>
						<excludes>
							<exclude>**/*BookingMapperImpl.*</exclude>
							<exclude>**/*ItemMapperImpl.*</exclude>
							<exclude>**/*ItemRequestMapperImpl.*</exclude>
							<exclude>**/*UserMapperImpl.*</exclude>
						</excludes>
					</configuration>
					<executions>
						<execution>
							<id>jacoco-initialize</id>
							<goals>
								<goal>prepare-agent</goal>
							</goals>
						</execution>
						<execution>
							<id>jacoco-check</id>
							<goals>
								<goal>check</goal>
							</goals>
							<configuration>
								<excludes>
									<exclude>**/*BookingMapperImpl.*</exclude>
									<exclude>**/*ItemMapperImpl.*</exclude>
									<exclude>**/*ItemRequestMapperImpl.*</exclude>
									<exclude>**/*UserMapperImpl.*</exclude>
								</excludes>
								<rules>
									<rule>
										<element>BUNDLE</element>
										<limits>
											<limit>
												<counter>INSTRUCTION</counter>
												<value>COVEREDRATIO</value>
												<minimum>0.01</minimum>
											</limit>
											<limit>
												<counter>LINE</counter>
												<value>COVEREDRATIO</value>
												<minimum>0.9</minimum>
											</limit>
											<limit>
												<counter>BRANCH</counter>
												<value>COVEREDRATIO</value>
												<minimum>0.6</minimum>
											</limit>
											<limit>
												<counter>COMPLEXITY</counter>
												<value>COVEREDRATIO</value>
												<minimum>0.6</minimum>
											</limit>
											<limit>
												<counter>METHOD</counter>
												<value>COVEREDRATIO</value>
												<minimum>0.7</minimum>
											</limit>
											<limit>
												<counter>CLASS</counter>
												<value>MISSEDCOUNT</value>
												<maximum>1</maximum>
											</limit>
										</limits>
									</rule>
								</rules>
							</configuration>
						</execution>
						<execution>
							<id>jacoco-report</id>
							<phase>test</phase>
							<goals>
								<goal>report</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.8.1</version>
					<configuration>
						<source>11</source>
						<target>11</target>
						<annotationProcessorPaths>
							<path>
								<groupId>org.mapstruct</groupId>
								<artifactId>mapstruct-processor</artifactId>
								<version>1.5.3.Final</version>
							</path>
							<path>
								<groupId>org.projectlombok</groupId>
								<artifactId>lombok</artifactId>
								<version>1.18.24</version>
							</path>
							<path>
								<groupId>org.projectlombok</groupId>
								<artifactId>lombok-mapstruct-binding</artifactId>
								<version>0.2.0</version>
							</path>
						</annotationProcessorPaths>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>

	<profiles>
		<profile>
			<id>check</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-checkstyle-plugin</artifactId>
					</plugin>
					<plugin>
						<groupId>com.github.spotbugs</groupId>
						<artifactId>spotbugs-maven-plugin</artifactId>
					</plugin>
				</plugins>
			</build>
			<reporting>
				<plugins>
					<plugin>
						<groupId>com.github.spotbugs</groupId>
						<artifactId>spotbugs-maven-plugin</artifactId>
					</plugin>
				</plugins>
			</reporting>
		</profile>
		<profile>
			<id>coverage</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.jacoco</groupId>
						<artifactId>jacoco-maven-plugin</artifactId>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>

</project>
